home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib13.dsk / FILE NAME MOVER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  123 lines

  1. 100  REM  **********************
  2. 110  REM  *  FILE NAME MOVER   *
  3. 120  REM  *     BY DEAN KAY    *
  4. 130  REM  * COPYRIGHT (C) 1983 *
  5. 140  REM  * BY MICRO-SPARC INC *
  6. 150  REM  * LINCLON, MA. 01773 *
  7. 160  REM  **********************
  8. 170  REM  ***BUFFERS=$3000-$3EFF
  9. 180  CLEAR : HIMEM: 12288
  10. 190  DIM P(60),T(60),S(60),L(60),E(60),LG(60)
  11. 200  DIM FILE$(60),DIR$(60)
  12. 210  REM  ***SETUP RWTS ROUTINE***
  13. 220  DATA  32,227,3,32,181,183,96
  14. 230  FOR A = 47721 TO 47727
  15. 240  READ B: POKE A,B: NEXT A
  16. 250 RD = 1:WR = 2: REM  ***READ & WRITE***
  17. 260 CMD = RD: REM  ***COMMAND=READ***
  18. 270  TEXT : HOME : HTAB 14: INVERSE : PRINT "FILE NAME MOVER": NORMAL : VTAB 23: PRINT "** COPYRIGHT 1983 - MICROSPARC, INC. **"
  19. 280  POKE 34,1: REM  ***TOP EDGE=1***
  20. 290  VTAB 10: HTAB 6: FLASH : PRINT "READING DIRECTORY, PLEASE WAIT"
  21. 300  GOSUB 5000: PRINT  CHR$(7): REM  ***BELL***
  22. 310  VTAB 10: HTAB 6: PRINT "FORMING DIRECTORY, PLEASE WAIT": NORMAL 
  23. 320 NUM = 0: REM  COUNTER =0
  24. 330  FOR BUFFER = 12288 TO 16128  STEP 256
  25. 340  FOR I = BUFFER +14 TO BUFFER +255  STEP 35
  26. 350  IF  PEEK(I) = 0  THEN 470: REM  ***END OF FILE QUIT***
  27. 360  IF  PEEK(I -3) = 255  THEN 450: REM  ***SKIP DELETED FILES***
  28. 370 NUM = NUM +1
  29. 380 P(NUM) =  PEEK(I -1)
  30. 390 S(NUM) =  PEEK(I -2)
  31. 400 T(NUM) =  PEEK(I -3)
  32. 410 L(NUM) =  PEEK(I +30)
  33. 420 E(NUM) =  PEEK(I +31)
  34. 430 FILE$(NUM) = ""
  35. 440  FOR J = 0 TO 29:FILE$(NUM) = FILE$(NUM) + CHR$( PEEK(I +J)): NEXT J
  36. 450  NEXT I
  37. 460  NEXT BUFFER
  38. 470  GOSUB 6000: REM  ***PRINT CATALOG***
  39. 1000  REM  ***RENAME ROUTINE***
  40. 1010  PRINT  CHR$(7): REM  ** BELL **
  41. 1020  PRINT "TYPE IN TWO FILE NAMES TO SWAP PLACES"
  42. 1030  INPUT "FILE NAME#1=";FR$
  43. 1040  IF FR$ = ""  THEN 2020
  44. 1050  INPUT "FILE NAME#2=";TU$
  45. 1060  IF TU$ = ""  THEN 2020
  46. 1070 FR =  VAL(FR$):TU =  VAL(TU$)
  47. 1080  IF FR = 0  THEN 1010
  48. 1090  IF TU = 0  THEN 1010
  49. 1100  IF FR >NUM  THEN 1010
  50. 1110  IF TU >NUM  THEN 1010
  51. 1120  IF FR = TU  THEN 1010
  52. 1130 F = FR:T = TU
  53. 1140  REM  ***TRANSFER ROUTINE***
  54. 1150 X = P(F):P(F) = P(T):P(T) = X
  55. 1160 X = T(F):T(F) = T(T):T(T) = X
  56. 1170 X = S(F):S(F) = S(T):S(T) = X
  57. 1180 X = L(F):L(F) = L(T):L(T) = X
  58. 1190 X = E(F):E(F) = E(T):E(T) = X
  59. 1200 X$ = FILE$(F):FILE$(F) = FILE$(T):FILE$(T) = X$
  60. 2000  REM  ***WRITE TO DISK?***
  61. 2010  GOSUB 6000
  62. 2020  PRINT  CHR$(7): REM  ***BELL***
  63. 2030  INPUT "WRITE DIRECTORY TO DISK? Y/N";A$
  64. 2040  IF A$ = ""  THEN  HOME : GOTO 1000
  65. 2050  IF  LEFT$(A$,1) = "N"  THEN  HOME : GOTO 1000
  66. 2060  IF  LEFT$(A$,1) = "Y"  THEN 3000
  67. 2070  GOTO 2010
  68. 3000  REM  ***CLEAR BUFFERS TO ZEROS***
  69. 3010  POKE 34,1: HOME : FLASH : VTAB 10: HTAB 7: PRINT "PLEASE WAIT, LOADING BUFFERS": NORMAL 
  70. 3020  FOR X = 48 TO 62: POKE 66,0: POKE 67,X: CALL 47062: NEXT X
  71. 3030  REM  ***LOAD BUFFERS***
  72. 3040 X = 0:S = 14: REM  ***COUNTER=0:SECTOR=14***
  73. 3050  FOR BUFFER = 12288 TO 16128  STEP 256
  74. 3060  POKE BUFFER +1,17: POKE BUFFER +2,S:S = S -1
  75. 3070  IF S = 0  THEN 4000: REM  ***SEC=0THENQUIT***
  76. 3080  FOR J = BUFFER +11 TO BUFFER +255  STEP 35
  77. 3090 X = X +1
  78. 3100  IF X >NUM  THEN 3160
  79. 3110  POKE J,T(X): POKE J +1,S(X)
  80. 3120  POKE J +2,P(X): POKE J +33,L(X)
  81. 3130  POKE J +34,E(X)
  82. 3140  FOR K = 1 TO 30: POKE J +K +2, ASC( MID$ (FILE$(X),K,1)): NEXT 
  83. 3150  NEXT J
  84. 3160  NEXT BUFFER
  85. 4000  REM  ***PRINT CATALOG ROUTINE***
  86. 4010  HOME : PRINT  CHR$(7): FLASH : VTAB 10: HTAB 7: PRINT "WRITING TO DISK, PLEASE WAIT": NORMAL 
  87. 4020  REM  ***OMMAND=WRITE***
  88. 4030 CMD = WR: GOSUB 5000
  89. 4040  TEXT : HOME 
  90. 4050  PRINT  CHR$(4);"CATALOG": END 
  91. 5000  REM  ***READ/WRITE TRK/SEC***
  92. 5010 BUF = 47:TRK = 17
  93. 5020  FOR SEC = 15 TO 1  STEP  -1
  94. 5030 BUF = BUF +1
  95. 5040  POKE 47083,0: REM  VOL#
  96. 5050  POKE 47089,BUF: REM  BUF HI
  97. 5060  POKE 47088,0: REM  BUFFER LO
  98. 5070  POKE 47092,CMD: REM  RD/WR TRK
  99. 5080  POKE 47084,TRK: REM  TRACK#
  100. 5090  POKE 47085,SEC: REM  SECTOR
  101. 5100  CALL 47721: NEXT SEC: RETURN 
  102. 6000  REM  ***REDUCE FILE NAMES***
  103. 6010  REM  ***TO 15 CHARACTERS***
  104. 6020  POKE 34,1: HOME 
  105. 6030  PRINT  CHR$(7): PRINT "ACTIVE PROGRAMS IN DIRECTORY ARE:"
  106. 6040  FOR X = 1 TO NUM
  107. 6050 LG(X) =  LEN(FILE$(X))
  108. 6060 DIR$(X) = FILE$(X)
  109. 6070  IF LG(X) >15  THEN LG = 15:DIR$(X) =  MID$ (DIR$(X),1,LG)
  110. 6080  NEXT X
  111. 6090  REM  ***PRINT TWO COLUMN CATALOG***
  112. 6100  FOR X = 1 TO NUM  STEP 2
  113. 6110  IF X >9  THEN 6160
  114. 6120  PRINT "( ";X;")";DIR$(X);
  115. 6130  IF X = 9  THEN 6180
  116. 6140  HTAB 20: PRINT "( ";X +1;")";DIR$(X +1)
  117. 6150  NEXT : GOTO 6200
  118. 6160  PRINT "(";X;")";DIR$(X);
  119. 6170  IF X = NUM  THEN 6200
  120. 6180  HTAB 20: PRINT "(";X +1;")";DIR$(X +1)
  121. 6190  NEXT X
  122. 6200  REM  POKE 34,20
  123. 6210  RETURN